package domain

import (
	"github.com/hlhutu/gormplus"
	"ruoyi-go/internal/framework/db"
	"time"
)

/**
 * 系统访问日志表 SysLogininfor
 */
type SysLogininfor struct {
	// ID
	InfoId int64 `json:"infoId" gorm:"column:info_id" form:"infoId"`

	// 用户账号
	UserName string `json:"userName" gorm:"column:user_name" form:"userName"`

	// 登录状态 0成功 1失败
	Status string `json:"status" gorm:"column:status" form:"status"`

	// 登录IP地址
	Ipaddr string `json:"ipaddr" gorm:"column:ipaddr" form:"ipaddr"`

	// 登录地点
	LoginLocation string `json:"loginLocation" gorm:"column:login_location" form:"loginLocation"`

	// 浏览器类型
	Browser string `json:"browser" gorm:"column:browser" form:"browser"`

	// 操作系统
	Os string `json:"os" gorm:"column:os" form:"os"`

	// 提示消息
	Msg string `json:"msg" gorm:"column:msg" form:"msg"`

	// 访问时间
	LoginTime time.Time `json:"loginTime" gorm:"column:login_time" form:"loginTime"`
}

// TableName 映射数据库表名
func (m SysLogininfor) TableName() string {
	return "sys_logininfor"
}

// SysLogininfor Model 定义
type sysLogininforModel struct {
	gormplus.Model[SysLogininfor] // 使用泛型封装基础操作
}

// SysLogininforModelInst 单例变量初始化
var sysLogininforModelInst *sysLogininforModel

// SysLogininforModel 获取 SysLogininfor 单例模型
func SysLogininforModel() *sysLogininforModel {
	if sysLogininforModelInst == nil {
		// 将 SysLogininfor 注册到 GORM DB，并初始化
		sysLogininforModelInst = &sysLogininforModel{Model: gormplus.NewModel(SysLogininfor{}, db.GormDB)}
	}
	return sysLogininforModelInst
}
